package ProxyStudy.DynamicProxy;

import ProxyStudy.staticProxy.Holder;
import ProxyStudy.staticProxy.HouseAgent;
import ProxyStudy.staticProxy.HouseRent;

import java.lang.reflect.Proxy;

public class TestDynamicProxy {
    public static void main(String[] args) {
        //新建需要代理的对象（房东）
        Holder holder = new Holder();

        //实现invocationHandler对象的类   ---> 动态代理类
        DynamicProxy dp = new DynamicProxy(holder);

        /**
         * classLoader : 类加载器，用来加载代理对象
         * interface : 被代理类实现的接口
         * dp : 实现了invocationHandler 接口的 对象
         */
        //执行需要代理的方法
//        HouseRent result = (HouseRent) Proxy.newProxyInstance(dp.getClass().getClassLoader(),new Class[]{HouseRent.class} ,dp );
        HouseRent result = (HouseRent) Proxy.newProxyInstance(holder.getClass().getClassLoader(),holder.getClass().getInterfaces(),dp);

        result.rent("东方明珠");
    }
}
